package cn.slipi.admin.service;

import cn.slipi.admin.common.dto.PageDTO;
import cn.slipi.admin.entity.TSysAdmin;
import cn.slipi.admin.entity.TSysAdminLog;
import cn.slipi.admin.service.dto.in.admin.LoginDTO;
import cn.slipi.admin.service.dto.in.m.*;
import cn.slipi.admin.service.dto.out.AdminOutDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 系统用户表 服务类
 * </p>
 *
 * @author lee
 * @since 2020-10-19
 */
public interface TSysAdminService extends IService<TSysAdmin> {
    /**
     * 根据手机号获取
     *
     * @param mobile
     * @return
     */
    TSysAdmin getByMobile(String mobile);

    /**
     * 根据ID获取
     *
     * @param id
     * @return
     */
    TSysAdmin getDetail(Integer id);

    /**
     * 批量获取
     *
     * @param ids
     * @return
     */
    List<TSysAdmin> getAdminByIds(List<Integer> ids);

    /**
     * 登录
     *
     * @param loginDTO
     * @return
     */
    TSysAdmin login(LoginDTO loginDTO);


    /**
     * 获取用户日志
     *
     * @param adminLogQueryDTO
     * @return
     */
    IPage<TSysAdminLog> getAdminLogList(AdminLogQueryDTO adminLogQueryDTO);

    /**
     * 初始化管理员密码
     *
     * @param id
     * @return
     */
    Boolean initPassword(Integer id);

    /**
     * 更新管理员
     *
     * @param adminId
     * @param adminUpdateDTO
     * @return
     */
    Boolean updateAdmin(Integer adminId, AdminUpdateDTO adminUpdateDTO);

    /**
     * 修改密码
     *
     * @param adminId
     * @param changePasswordDTO
     * @return
     */
    Boolean changePassword(Integer adminId, ChangePasswordDTO changePasswordDTO);

    /**
     * 新建管理员
     *
     * @param adminCreateDTO
     * @return
     */
    Integer addAdmin(AdminCreateDTO adminCreateDTO);

    /**
     * 获取std列表
     *
     * @param adminQueryDTO
     * @return
     */
    PageDTO<AdminOutDTO> getAdminList(AdminQueryDTO adminQueryDTO);

    /**
     * 根据ID获取
     *
     * @param id
     * @return
     */
    AdminDTO getDetail(Long id);

    /**
     * 检验用户名密码
     *
     * @param checkAdminDTO
     * @return
     */
    TSysAdmin checkAdmin(CheckAdminDTO checkAdminDTO);

    /**
     * 更新登陆信息
     *
     * @param Admin
     * @param loginInfoDTO
     * @return
     */
    Boolean updateLoginInfo(TSysAdmin Admin, LoginInfoDTO loginInfoDTO);
}
